/**
 * 
 */
package testy.core;

import static org.junit.Assert.*;

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;

import baduga.core.Core_Exception;
import baduga.core.Core_Messages;

/**
 * @author Janek
 *
 */
public class Test__Core_Messages {

	
	private static Core_Messages obj;
	
	/** Kody wiadomości istniejące oraz nie istniejące */
	private static int messageCodesCorrect[] = new int[] {0xFFFF, 0xFFFE};
	private static int messageCodesInvalid[] = new int[] {0xFFEC, 0xFFED};
	
	/** Wiadomości sieciowe w formie prawidłowej */
	private static String networkDataStringCorrect[] = new String[] {
		"Kom 1.", 
		",Kom 2.",
		",Kom 3.,",
		",,Kom 4.,",
		",Kom 5.,,",
		",,Kom 6.,,",
		",",
		",,",
	};
	private static int 	  networkDataCodeCorrect[][] = new int[][] {
		//1
		new int[] {},
		//2
		new int[] {0xFFFF}, 
		//3
		new int[] {0xFFFD, 0xFFFE},
		//4
		new int[] {0xFFFF, 0xFFFD, 0xFFFE},
		//5
		new int[] {0xFFFD, 0xFFFE, 0xFFFF},
		//6
		new int[] {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF},
		//7
		new int[] {0xFFFF},
		//8
		new int[] {0xFFFD, 0xFFFE},
	};
	
	/** Wiadomości sieciowe w formie niew prawidłowej  */
	private static String networkDataStringInvalid[] = new String[] {
		
	};
	private static int 	  networkDataCodeInvalid[][] = new int[][] {
		
	};
	
	
	/**
	 * @throws java.lang.Exception
	 */
	@BeforeClass
	public static void setUpBeforeClass() throws Exception {
		obj = new Core_Messages();
	}

	/**
	 * @throws java.lang.Exception
	 */
	@AfterClass
	public  static void tearDownAfterClass() throws Exception {
		obj = null;
	}


	

	
	/**
	 * Podłączenie inita, a następnie wykonanie testu aktywacji.
	 */
	@Test
	public void testActivateStateAfterInit() {
		obj.init();
		
		assertTrue("Powinno być aktywne", obj.isActive());
	}
	
	/**
	 * Wykonanie testów na funkcjach dla danych które powinny przejść
	 */
	@Test
	public void tesCoreFunctionsAfterInitSucess() {
		int i;
		
		//Pozytywne - Wyświetlenie komunikatu o okreslony kodzie
		for(i = 0; i < messageCodesCorrect.length; i++)
		{
			assertTrue("Istniejący komunikat o kodzie: " + messageCodesCorrect[i], 	obj.isExistMessage(messageCodesCorrect[i]));
		}
		
		
		

	}
	
	/**
	 * Wykonanie testów na funkcjach dla danych które nie powinny przejść w formie pozytywnej
	 */
	@Test
	public void testCoreFunctionsAfteInitFail() {
		int i;
		
		//Negatywne - Obsługa zdarzenia dla nie istniejącego komunikatu
		for(i = 0; i < messageCodesInvalid.length; i++)
		{
			assertFalse("Nie istniejący komunikat o kodzie: " + messageCodesInvalid[i], 	obj.isExistMessage(messageCodesInvalid[i]));
		}
		
	}
	
	
	@Test
	public void testCoreFunctionsParseObjectMessage()
	{
		
	}
	

}
